package ln.javatest.day10.demo01;

import java.util.Random;

public class Demo02equals {
    public static void main(String[] args) {
         /*
        Person类默认冀继承Object类，所以我们可以使用Object类中的equals方法
        boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”
        Object类的equals方法的源码：
            public boolean equals(Object obj)
                return (this == obj);
             }
             参数：
                Object obj:可以传递任意对象
             方法体：
                ==：比较运算符，返回到就是一个布尔值true，false
                基本数据类型：比较的是值
                引用数据类型：比较的是两个对象的地址值
             this是谁？哪个对象调用的方法，方法中的this就是哪个对象;p1调用的那就是p1.
             obj是谁？传递过出来的参数p2
             this==obj --> p1==p2


        */
        Person p1 = new Person("王嘉尔",18);
        Person p2 = new Person("易烊千玺",20);
        //在此之前要先把toString方法注释，否则打印的就是数据值
        System.out.println("p1:"+ p1);
        System.out.println("p2:"+ p2);
        //p1:ln.javatest.day10.demo01.Person@45c8e616
        //p2:ln.javatest.day10.demo01.Person@4cdbe50f
        //赋值地址
        //p1 = p2;
        Random r =  new Random();
        //random也是Object类，所以可以被传递，但Random不能转换为Person
        //报错类型转换异常
        boolean b1 = p1.equals(r);
        //上面这句传递成功，在向下转型时出错，不能向下转型称为Person，
        boolean b = p1.equals(p2);
        System.out.println(b1); //false
        System.out.println(b); //没赋值前false  赋值后true //false
    }

}
